From 09ec88d0ce1ef7f51e72ed03d754b2c936193d05 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 19 May 2019 03:09:05 +0000 Subject: [PATCH] win32: Build fixes --- gdk/win32/gdkcairocontext-win32.c | 8 +- gdk/win32/gdkdevice-virtual.c | 2 +- gdk/win32/gdkdevice-win32.c | 6 +- gdk/win32/gdkdevice-wintab.c | 4 +- gdk/win32/gdkdisplay-win32.c | 3 +- gdk/win32/gdkdrop-win32.c | 16 +- gdk/win32/gdkevents-win32.c | 138 ++++----- gdk/win32/gdkgeometry-win32.c | 39 +-- gdk/win32/gdkglcontext-win32.c | 10 +- gdk/win32/gdkprivate-win32.h | 13 +- gdk/win32/gdksurface-win32.c | 494 ++++++++++++------------------ gdk/win32/gdksurface-win32.h | 26 +- gdk/win32/gdkwin32misc.h | 2 +- gtk/gtkimcontextime.c | 13 +- 14 files changed, 308 insertions(+), 466 deletions(-) diff --git a/gdk/win32/gdkcairocontext-win32.c b/gdk/win32/gdkcairocontext-win32.c index c0bc2bb602..5ccc640774 100644 --- a/gdk/win32/gdkcairocontext-win32.c +++ b/gdk/win32/gdkcairocontext-win32.c @@ -37,7 +37,7 @@ gdk_win32_surface_get_queued_window_rect (GdkSurface *surface, RECT *return_window_rect) { RECT window_rect; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (surface->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface); _gdk_win32_get_window_client_area_rect (surface, scale, &window_rect); @@ -78,7 +78,7 @@ gdk_win32_surface_apply_queued_move_resize (GdkSurface *surface, } static cairo_surface_t * -create_cairo_surface_for_layered_window (GdkSurfaceImplWin32 *impl, +create_cairo_surface_for_layered_window (GdkWin32Surface *impl, gint width, gint height, gint scale) @@ -143,14 +143,14 @@ gdk_win32_cairo_context_begin_frame (GdkDrawContext *draw_context, { GdkWin32CairoContext *self = GDK_WIN32_CAIRO_CONTEXT (draw_context); GdkSurface *surface; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; int scale; cairo_t *cr; gint width, height; RECT queued_window_rect; surface = gdk_draw_context_get_surface (draw_context); - impl = GDK_SURFACE_IMPL_WIN32 (surface->impl); + impl = GDK_WIN32_SURFACE (surface); scale = gdk_surface_get_scale_factor (surface); self->layered = impl->layered; diff --git a/gdk/win32/gdkdevice-virtual.c b/gdk/win32/gdkdevice-virtual.c index c7e7bdb20e..3910f0bd39 100644 --- a/gdk/win32/gdkdevice-virtual.c +++ b/gdk/win32/gdkdevice-virtual.c @@ -109,7 +109,7 @@ gdk_device_virtual_set_surface_cursor (GdkDevice *device, if (win32_hcursor != NULL) SetCursor (gdk_win32_hcursor_get_handle (win32_hcursor)); - g_set_object (&GDK_SURFACE_IMPL_WIN32 (window->impl)->cursor, win32_hcursor); + g_set_object (&GDK_WIN32_SURFACE (window)->cursor, win32_hcursor); } static void diff --git a/gdk/win32/gdkdevice-win32.c b/gdk/win32/gdkdevice-win32.c index bea82f991f..573eb8ce10 100644 --- a/gdk/win32/gdkdevice-win32.c +++ b/gdk/win32/gdkdevice-win32.c @@ -106,7 +106,7 @@ gdk_device_win32_query_state (GdkDevice *device, if (window) { - scale = GDK_SURFACE_IMPL_WIN32 (window->impl)->surface_scale; + scale = GDK_WIN32_SURFACE (window)->surface_scale; hwnd = GDK_SURFACE_HWND (window); } else @@ -197,7 +197,7 @@ _gdk_device_win32_surface_at_position (GdkDevice *device, gboolean get_toplevel) { GdkSurface *window = NULL; - GdkSurfaceImplWin32 *impl = NULL; + GdkWin32Surface *impl = NULL; POINT screen_pt, client_pt; HWND hwnd, hwndc; RECT rect; @@ -261,7 +261,7 @@ _gdk_device_win32_surface_at_position (GdkDevice *device, if (window && (win_x || win_y)) { - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (win_x) *win_x = client_pt.x / impl->surface_scale; diff --git a/gdk/win32/gdkdevice-wintab.c b/gdk/win32/gdkdevice-wintab.c index 873c05c21a..69bf5be1be 100644 --- a/gdk/win32/gdkdevice-wintab.c +++ b/gdk/win32/gdkdevice-wintab.c @@ -117,7 +117,7 @@ gdk_device_wintab_query_state (GdkDevice *device, device_wintab = GDK_DEVICE_WINTAB (device); if (window) { - scale = GDK_SURFACE_IMPL_WIN32 (window->impl)->surface_scale; + scale = GDK_WIN32_SURFACE (window)->surface_scale; hwnd = GDK_SURFACE_HWND (window); } else @@ -218,7 +218,7 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab, gint i; device = GDK_DEVICE (device_wintab); - impl_surface = _gdk_surface_get_impl_surface (window); + impl_surface = window; temp_x = temp_y = 0; gdk_surface_get_origin (impl_surface, &root_x, &root_y); diff --git a/gdk/win32/gdkdisplay-win32.c b/gdk/win32/gdkdisplay-win32.c index bbfda32729..9cd080012c 100644 --- a/gdk/win32/gdkdisplay-win32.c +++ b/gdk/win32/gdkdisplay-win32.c @@ -1098,7 +1098,6 @@ gdk_win32_display_class_init (GdkWin32DisplayClass *klass) object_class->dispose = gdk_win32_display_dispose; object_class->finalize = gdk_win32_display_finalize; - display_class->surface_type = GDK_TYPE_WIN32_SURFACE; display_class->cairo_context_type = GDK_TYPE_WIN32_CAIRO_CONTEXT; display_class->get_name = gdk_win32_display_get_name; @@ -1116,7 +1115,7 @@ gdk_win32_display_class_init (GdkWin32DisplayClass *klass) display_class->get_next_serial = gdk_win32_display_get_next_serial; display_class->notify_startup_complete = gdk_win32_display_notify_startup_complete; - display_class->create_surface_impl = _gdk_win32_display_create_surface_impl; + display_class->create_surface = _gdk_win32_display_create_surface; display_class->get_keymap = _gdk_win32_display_get_keymap; display_class->text_property_to_utf8_list = _gdk_win32_display_text_property_to_utf8_list; diff --git a/gdk/win32/gdkdrop-win32.c b/gdk/win32/gdkdrop-win32.c index 44dab15c19..6ad6615442 100644 --- a/gdk/win32/gdkdrop-win32.c +++ b/gdk/win32/gdkdrop-win32.c @@ -129,7 +129,7 @@ struct _drop_target_context * this surface remains the same. * This is not a reference, as drop_target_context must not * outlive the surface it's attached to. - * drop_target_context is not folded into GdkSurfaceImplWin32 + * drop_target_context is not folded into GdkWin32Surface * only because it's easier to present it to COM as a separate * object when it's allocated separately. */ @@ -206,12 +206,12 @@ gdk_drop_new (GdkDisplay *display, GdkDrop * _gdk_win32_get_drop_for_dest_surface (GdkSurface *dest) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; if (dest == NULL) return NULL; - impl = GDK_SURFACE_IMPL_WIN32 (dest->impl); + impl = GDK_WIN32_SURFACE (dest); if (impl->drop_target != NULL) return impl->drop_target->drop; @@ -465,7 +465,7 @@ _gdk_win32_local_drop_target_dragenter (GdkDrag *drag, GdkWin32Drop *drop_win32; GdkDisplay *display; GdkDragAction source_actions; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (dest_surface->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (dest_surface); GDK_NOTE (DND, g_print ("_gdk_win32_local_drop_target_dragenter %p @ %d : %d" " for dest window 0x%p" @@ -685,7 +685,7 @@ void _gdk_win32_local_drop_target_dragleave (GdkDrop *drop, guint32 time_) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (gdk_drop_get_surface (drop)->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (gdk_drop_get_surface (drop)); GDK_NOTE (DND, g_print ("_gdk_win32_local_drop_target_dragleave %p\n", drop)); gdk_drop_emit_leave_event (drop, TRUE, time_); @@ -1156,7 +1156,7 @@ _gdk_win32_surface_register_dnd (GdkSurface *window) } else { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); /* Return if window is already setup for DND. */ if (impl->drop_target != NULL) @@ -1188,7 +1188,7 @@ _gdk_win32_surface_register_dnd (GdkSurface *window) void _gdk_win32_surface_unregister_dnd (GdkSurface *window) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); if (impl->drop_target) idroptarget_release (&impl->drop_target->idt); @@ -1289,7 +1289,7 @@ gdk_win32_drop_read_async (GdkDrop *drop, return; } - tctx = GDK_SURFACE_IMPL_WIN32 (gdk_drop_get_surface (drop)->impl)->drop_target; + tctx = GDK_WIN32_SURFACE (gdk_drop_get_surface (drop))->drop_target; if (tctx == NULL) { diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 5e1910534c..126177e4e5 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -310,7 +310,7 @@ low_level_keystroke_handler (WPARAM message, KBDLLHOOKSTRUCT *kbdhook, GdkSurface *window) { - GdkSurface *toplevel = gdk_surface_get_toplevel (window); + GdkSurface *toplevel = window; static DWORD last_keydown = 0; if (message == WM_KEYDOWN && @@ -606,7 +606,7 @@ find_window_for_mouse_event (GdkSurface* reported_window, pt = msg->pt; if (!grab->owner_events) - event_surface = grab->native_surface; + event_surface = grab->surface; else { event_surface = NULL; @@ -621,7 +621,7 @@ find_window_for_mouse_event (GdkSurface* reported_window, event_surface = gdk_win32_handle_table_lookup (hwnd); } if (event_surface == NULL) - event_surface = grab->native_surface; + event_surface = grab->surface; } /* need to also adjust the coordinates to the new window */ @@ -991,7 +991,7 @@ apply_message_filters (GdkDisplay *display, static void show_window_recurse (GdkSurface *window, gboolean hide_window) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); GSList *children = impl->transient_children; GdkSurface *child = NULL; @@ -1040,7 +1040,7 @@ static void do_show_window (GdkSurface *window, gboolean hide_window) { GdkSurface *tmp_window = NULL; - GdkSurfaceImplWin32 *tmp_impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *tmp_impl = GDK_WIN32_SURFACE (window); if (!tmp_impl->changing_state) { @@ -1048,7 +1048,7 @@ do_show_window (GdkSurface *window, gboolean hide_window) while (tmp_impl->transient_owner != NULL) { tmp_window = tmp_impl->transient_owner; - tmp_impl = GDK_SURFACE_IMPL_WIN32 (tmp_window->impl); + tmp_impl = GDK_WIN32_SURFACE (tmp_window); } /* If we couldn't find one, use the window provided. */ @@ -1080,7 +1080,7 @@ send_crossing_event (GdkDisplay *display, GdkDeviceGrabInfo *grab; GdkDeviceManagerWin32 *device_manager; POINT pt; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); device_manager = _gdk_device_manager; @@ -1091,7 +1091,7 @@ send_crossing_event (GdkDisplay *display, mode != GDK_CROSSING_UNGRAB) { /* !owner_event => only report events wrt grab window, ignore rest */ - if ((GdkSurface *)window != grab->native_surface) + if ((GdkSurface *)window != grab->surface) return; } @@ -1118,14 +1118,6 @@ send_crossing_event (GdkDisplay *display, _gdk_win32_append_event (event); } -static GdkSurface * -get_native_parent (GdkSurface *window) -{ - if (window->parent != NULL) - return window->parent->impl_surface; - return NULL; -} - static GdkSurface * find_common_ancestor (GdkSurface *win1, GdkSurface *win2) @@ -1138,14 +1130,14 @@ find_common_ancestor (GdkSurface *win1, while (tmp != NULL) { path1 = g_list_prepend (path1, tmp); - tmp = get_native_parent (tmp); + tmp = tmp->parent; } tmp = win2; while (tmp != NULL) { path2 = g_list_prepend (path2, tmp); - tmp = get_native_parent (tmp); + tmp = tmp->parent; } list1 = path1; @@ -1214,7 +1206,7 @@ synthesize_crossing_events (GdkDisplay *display, notify_type = GDK_NOTIFY_VIRTUAL; last = a; - win = get_native_parent (a); + win = a->parent; while (win != c && win != NULL) { send_crossing_event (display, @@ -1226,7 +1218,7 @@ synthesize_crossing_events (GdkDisplay *display, mask, time_); last = win; - win = get_native_parent (win); + win = win->parent; } } } @@ -1237,11 +1229,11 @@ synthesize_crossing_events (GdkDisplay *display, if (c != b) { path = NULL; - win = get_native_parent (b); + win = b->parent; while (win != c && win != NULL) { path = g_list_prepend (path, win); - win = get_native_parent (win); + win = win->parent; } if (non_linear) @@ -1297,12 +1289,10 @@ gboolean _gdk_win32_get_window_rect (GdkSurface *window, RECT *rect) { - GdkSurfaceImplWin32 *surface_impl; RECT client_rect; POINT point; HWND hwnd; - - surface_impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); hwnd = GDK_SURFACE_HWND (window); @@ -1314,8 +1304,8 @@ _gdk_win32_get_window_rect (GdkSurface *window, if (gdk_surface_get_parent (window) == NULL) { ClientToScreen (hwnd, &point); - point.x += _gdk_offset_x * surface_impl->surface_scale; - point.y += _gdk_offset_y * surface_impl->surface_scale; + point.x += _gdk_offset_x * impl->surface_scale; + point.y += _gdk_offset_y * impl->surface_scale; } rect->left = point.x; @@ -1323,36 +1313,36 @@ _gdk_win32_get_window_rect (GdkSurface *window, rect->right = point.x + client_rect.right - client_rect.left; rect->bottom = point.y + client_rect.bottom - client_rect.top; - return !surface_impl->inhibit_configure; + return !impl->inhibit_configure; } void -_gdk_win32_do_emit_configure_event (GdkSurface *window, +_gdk_win32_do_emit_configure_event (GdkSurface *surface, RECT rect) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface); impl->unscaled_width = rect.right - rect.left; impl->unscaled_height = rect.bottom - rect.top; - window->width = (impl->unscaled_width + impl->surface_scale - 1) / impl->surface_scale; - window->height = (impl->unscaled_height + impl->surface_scale - 1) / impl->surface_scale; - window->x = rect.left / impl->surface_scale; - window->y = rect.top / impl->surface_scale; + surface->width = (impl->unscaled_width + impl->surface_scale - 1) / impl->surface_scale; + surface->height = (impl->unscaled_height + impl->surface_scale - 1) / impl->surface_scale; + surface->x = rect.left / impl->surface_scale; + surface->y = rect.top / impl->surface_scale; - _gdk_surface_update_size (window); + _gdk_surface_update_size (surface); - g_signal_emit_by_name (window, "size-changed", window->width, window->height); + g_signal_emit_by_name (surface, "size-changed", surface->width, surface->height); } void -_gdk_win32_emit_configure_event (GdkSurface *window) +_gdk_win32_emit_configure_event (GdkSurface *surface) { RECT rect; - if (!_gdk_win32_get_window_rect (window, &rect)) + if (!_gdk_win32_get_window_rect (surface, &rect)) return; - _gdk_win32_do_emit_configure_event (window, rect); + _gdk_win32_do_emit_configure_event (surface, rect); } cairo_region_t * @@ -1418,7 +1408,7 @@ handle_wm_paint (MSG *msg, HDC hdc; PAINTSTRUCT paintstruct; cairo_region_t *update_region; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); if (GetUpdateRgn (msg->hwnd, hrgn, FALSE) == ERROR) { @@ -1523,7 +1513,7 @@ handle_nchittest (HWND hwnd, gint *ret_valp) { RECT rect; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; if (window == NULL || window->input_shape == NULL) return FALSE; @@ -1537,7 +1527,7 @@ handle_nchittest (HWND hwnd, if (!GetWindowRect (hwnd, &rect)) return FALSE; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); rect.left = screen_x - rect.left; rect.top = screen_y - rect.top; @@ -1558,7 +1548,7 @@ static void handle_dpi_changed (GdkSurface *window, MSG *msg) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); GdkDisplay *display = gdk_display_get_default (); GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (display); RECT *rect = (RECT *)msg->lParam; @@ -1611,7 +1601,7 @@ generate_button_event (GdkEventType type, { GdkEvent *event = gdk_event_new (type); GdkDeviceManagerWin32 *device_manager; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); if (_gdk_input_ignore_core > 0) return; @@ -1674,7 +1664,7 @@ ensure_stacking_on_unminimize (MSG *msg) rover = GetNextWindow (rover, GW_HWNDNEXT)) { GdkSurface *rover_gdkw = gdk_win32_handle_table_lookup (rover); - GdkSurfaceImplWin32 *rover_impl; + GdkWin32Surface *rover_impl; gboolean rover_ontop; /* Checking window group not implemented yet */ @@ -1682,7 +1672,7 @@ ensure_stacking_on_unminimize (MSG *msg) continue; rover_ontop = should_window_be_always_on_top (rover_gdkw); - rover_impl = GDK_SURFACE_IMPL_WIN32 (rover_gdkw->impl); + rover_impl = GDK_WIN32_SURFACE (rover_gdkw); if (GDK_SURFACE_IS_MAPPED (rover_gdkw) && (rover_impl->type_hint == GDK_SURFACE_TYPE_HINT_UTILITY || @@ -1708,7 +1698,7 @@ static gboolean ensure_stacking_on_window_pos_changing (MSG *msg, GdkSurface *window) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); WINDOWPOS *windowpos = (WINDOWPOS *) msg->lParam; HWND rover; gboolean restacking; @@ -1735,7 +1725,7 @@ ensure_stacking_on_window_pos_changing (MSG *msg, rover = GetNextWindow (rover, GW_HWNDNEXT)) { GdkSurface *rover_gdkw = gdk_win32_handle_table_lookup (rover); - GdkSurfaceImplWin32 *rover_impl; + GdkWin32Surface *rover_impl; gboolean rover_ontop; /* Checking window group not implemented yet */ @@ -1744,7 +1734,7 @@ ensure_stacking_on_window_pos_changing (MSG *msg, continue; rover_ontop = should_window_be_always_on_top (rover_gdkw); - rover_impl = GDK_SURFACE_IMPL_WIN32 (rover_gdkw->impl); + rover_impl = GDK_WIN32_SURFACE (rover_gdkw); if (GDK_SURFACE_IS_MAPPED (rover_gdkw) && (rover_impl->type_hint == GDK_SURFACE_TYPE_HINT_UTILITY || @@ -1772,7 +1762,7 @@ static void ensure_stacking_on_activate_app (MSG *msg, GdkSurface *window) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); HWND rover; gboolean window_ontop; @@ -1803,7 +1793,7 @@ ensure_stacking_on_activate_app (MSG *msg, rover = GetNextWindow (rover, GW_HWNDPREV)) { GdkSurface *rover_gdkw = gdk_win32_handle_table_lookup (rover); - GdkSurfaceImplWin32 *rover_impl; + GdkWin32Surface *rover_impl; gboolean rover_ontop; /* Checking window group not implemented yet */ @@ -1811,7 +1801,7 @@ ensure_stacking_on_activate_app (MSG *msg, continue; rover_ontop = should_window_be_always_on_top (rover_gdkw); - rover_impl = GDK_SURFACE_IMPL_WIN32 (rover_gdkw->impl); + rover_impl = GDK_WIN32_SURFACE (rover_gdkw); if (GDK_SURFACE_IS_MAPPED (rover_gdkw) && (rover_impl->type_hint == GDK_SURFACE_TYPE_HINT_UTILITY || @@ -1832,11 +1822,11 @@ ensure_stacking_on_activate_app (MSG *msg, static gboolean handle_wm_sysmenu (GdkSurface *window, MSG *msg, gint *ret_valp) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; LONG_PTR style, tmp_style; LONG_PTR additional_styles; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); style = GetWindowLongPtr (msg->hwnd, GWL_STYLE); @@ -1907,13 +1897,13 @@ gboolean _gdk_win32_surface_fill_min_max_info (GdkSurface *window, MINMAXINFO *mmi) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; RECT rect; if (GDK_SURFACE_DESTROYED (window)) return FALSE; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->hint_flags & GDK_HINT_MIN_SIZE) { @@ -2035,7 +2025,7 @@ gdk_event_translate (MSG *msg, GdkDisplay *display; GdkSurface *window = NULL; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; GdkWin32Display *win32_display; GdkSurface *new_window; @@ -2104,7 +2094,7 @@ gdk_event_translate (MSG *msg, #define return GOTO_DONE_INSTEAD if (msg->message == aerosnap_message) - _gdk_win32_surface_handle_aerosnap (gdk_surface_get_toplevel (window), + _gdk_win32_surface_handle_aerosnap (window, (GdkWin32AeroSnapCombo) msg->wParam); switch (msg->message) @@ -2190,7 +2180,7 @@ gdk_event_translate (MSG *msg, if (GDK_SURFACE_DESTROYED (window)) break; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); API_CALL (GetKeyboardState, (key_state)); @@ -2517,7 +2507,7 @@ gdk_event_translate (MSG *msg, generate_button_event (GDK_BUTTON_RELEASE, button, window, msg); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); /* End a drag op when the same button that started it is released */ if (impl->drag_move_resize_context.op != GDK_WIN32_DRAGOP_NONE && @@ -2554,7 +2544,7 @@ gdk_event_translate (MSG *msg, if (!pointer_grab->owner_events && new_window != NULL && - new_window != pointer_grab->native_surface) + new_window != pointer_grab->surface) new_window = NULL; } @@ -2586,7 +2576,7 @@ gdk_event_translate (MSG *msg, } g_set_object (&window, find_window_for_mouse_event (window, msg)); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); /* If we haven't moved, don't create any GDK event. Windows * sends WM_MOUSEMOVE messages after a new window is shows under @@ -2720,7 +2710,7 @@ gdk_event_translate (MSG *msg, g_set_object (&window, new_window); } - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); ScreenToClient (msg->hwnd, &point); event = gdk_event_new (GDK_SCROLL); @@ -2814,7 +2804,7 @@ gdk_event_translate (MSG *msg, return_val = TRUE; } - if (_gdk_modal_blocked (gdk_surface_get_toplevel (window))) + if (_gdk_modal_blocked (window)) { *ret_valp = MA_NOACTIVATEANDEAT; return_val = TRUE; @@ -2892,11 +2882,11 @@ gdk_event_translate (MSG *msg, if (!return_val && !GDK_SURFACE_DESTROYED (window) && - GDK_SURFACE_IMPL_WIN32 (window->impl)->cursor != NULL) + GDK_WIN32_SURFACE (window)->cursor != NULL) { win32_display = GDK_WIN32_DISPLAY (gdk_surface_get_display (window)); - GDK_NOTE (EVENTS, g_print (" (window SetCursor(%p)", gdk_win32_hcursor_get_handle (GDK_SURFACE_IMPL_WIN32 (window->impl)->cursor))); - SetCursor (gdk_win32_hcursor_get_handle (GDK_SURFACE_IMPL_WIN32 (window->impl)->cursor)); + GDK_NOTE (EVENTS, g_print (" (window SetCursor(%p)", gdk_win32_hcursor_get_handle (GDK_WIN32_SURFACE (window)->cursor))); + SetCursor (gdk_win32_hcursor_get_handle (GDK_WIN32_SURFACE (window)->cursor)); return_val = TRUE; *ret_valp = TRUE; } @@ -2908,7 +2898,7 @@ gdk_event_translate (MSG *msg, break; case WM_INITMENU: - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->have_temp_styles) { @@ -2935,7 +2925,7 @@ gdk_event_translate (MSG *msg, do_show_window (window, msg->wParam == SC_MINIMIZE ? TRUE : FALSE); break; case SC_MAXIMIZE: - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); impl->maximizing = TRUE; break; } @@ -2993,7 +2983,7 @@ gdk_event_translate (MSG *msg, _gdk_win32_end_modal_call (GDK_WIN32_MODAL_OP_SIZEMOVE_MASK); } - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->drag_move_resize_context.op != GDK_WIN32_DRAGOP_NONE) gdk_win32_surface_end_move_resize_drag (window); @@ -3016,7 +3006,7 @@ gdk_event_translate (MSG *msg, { return_val = ensure_stacking_on_window_pos_changing (msg, window); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->maximizing) { @@ -3117,7 +3107,7 @@ gdk_event_translate (MSG *msg, !GDK_SURFACE_DESTROYED (window)) { /* Make transient parent the forground window when window unmaps */ - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->transient_owner && GetForegroundWindow () == GDK_SURFACE_HWND (window)) @@ -3156,7 +3146,7 @@ gdk_event_translate (MSG *msg, _gdk_win32_rect_to_string (&rect), _gdk_win32_rect_to_string (drag))); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); orig_drag = *drag; if (impl->hint_flags & GDK_HINT_RESIZE_INC) { @@ -3390,7 +3380,7 @@ gdk_event_translate (MSG *msg, _gdk_win32_append_event (event); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->transient_owner && GetForegroundWindow() == GDK_SURFACE_HWND (window)) { diff --git a/gdk/win32/gdkgeometry-win32.c b/gdk/win32/gdkgeometry-win32.c index 7b386e66c3..e07168928b 100644 --- a/gdk/win32/gdkgeometry-win32.c +++ b/gdk/win32/gdkgeometry-win32.c @@ -49,9 +49,9 @@ typedef struct _GdkSurfaceParentPos GdkSurfaceParentPos; static void tmp_unset_bg (GdkSurface *window) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); impl->no_bg = TRUE; } @@ -59,9 +59,9 @@ tmp_unset_bg (GdkSurface *window) static void tmp_reset_bg (GdkSurface *window) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); impl->no_bg = FALSE; } @@ -73,12 +73,12 @@ _gdk_surface_move_resize_child (GdkSurface *window, gint width, gint height) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; g_return_if_fail (window != NULL); g_return_if_fail (GDK_IS_SURFACE (window)); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); GDK_NOTE (MISC, g_print ("_gdk_surface_move_resize_child: %s@%+d%+d %dx%d@%+d%+d\n", _gdk_win32_surface_description (window), window->x, window->y, width, height, x, y)); @@ -106,14 +106,14 @@ _gdk_surface_move_resize_child (GdkSurface *window, GDK_NOTE (MISC, g_print ("... SetWindowPos(%p,NULL,%d,%d,%d,%d," "NOACTIVATE|NOZORDER)\n", GDK_SURFACE_HWND (window), - (window->x + window->parent->abs_x) * impl->surface_scale, - (window->y + window->parent->abs_y) * impl->surface_scale, + window->x * impl->surface_scale, + window->y * impl->surface_scale, impl->unscaled_width, impl->unscaled_height)); API_CALL (SetWindowPos, (GDK_SURFACE_HWND (window), NULL, - (window->x + window->parent->abs_x) * impl->surface_scale, - (window->y + window->parent->abs_y) * impl->surface_scale, + window->x * impl->surface_scale, + window->y * impl->surface_scale, impl->unscaled_width, impl->unscaled_height, SWP_NOACTIVATE | SWP_NOZORDER)); @@ -131,14 +131,6 @@ _gdk_win32_surface_tmp_unset_bg (GdkSurface *window, return; tmp_unset_bg (window); - - if (recurse) - { - GList *l; - - for (l = window->children; l != NULL; l = l->next) - _gdk_win32_surface_tmp_unset_bg (l->data, TRUE); - } } void @@ -147,8 +139,7 @@ _gdk_win32_surface_tmp_unset_parent_bg (GdkSurface *window) if (window->parent == NULL) return; - window = _gdk_surface_get_impl_surface (window->parent); - _gdk_win32_surface_tmp_unset_bg (window, FALSE); + _gdk_win32_surface_tmp_unset_bg (window->parent, FALSE); } void @@ -161,12 +152,4 @@ _gdk_win32_surface_tmp_reset_bg (GdkSurface *window, return; tmp_reset_bg (window); - - if (recurse) - { - GList *l; - - for (l = window->children; l != NULL; l = l->next) - _gdk_win32_surface_tmp_reset_bg (l->data, TRUE); - } } diff --git a/gdk/win32/gdkglcontext-win32.c b/gdk/win32/gdkglcontext-win32.c index f97dc67fc3..965f04a46a 100644 --- a/gdk/win32/gdkglcontext-win32.c +++ b/gdk/win32/gdkglcontext-win32.c @@ -64,9 +64,9 @@ _gdk_win32_gl_context_dispose (GObject *gobject) ReleaseDC (display_win32->gl_hwnd, context_win32->gl_hdc); } - if (surface != NULL && surface->impl != NULL) + if (surface != NULL) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (surface->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface); if (impl->suppress_layered > 0) impl->suppress_layered--; @@ -166,11 +166,11 @@ gdk_win32_gl_context_begin_frame (GdkDrawContext *draw_context, { GdkGLContext *context = GDK_GL_CONTEXT (draw_context); GdkSurface *surface; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; RECT queued_window_rect; surface = gdk_gl_context_get_surface (context); - impl = GDK_SURFACE_IMPL_WIN32 (surface->impl); + impl = GDK_WIN32_SURFACE (surface); gdk_win32_surface_get_queued_window_rect (surface, gdk_surface_get_scale_factor (surface), @@ -667,7 +667,7 @@ gdk_win32_gl_context_realize (GdkGLContext *context, gint glver_minor = 0; GdkSurface *surface = gdk_gl_context_get_surface (context); - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (surface->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface); GdkWin32Display *win32_display = GDK_WIN32_DISPLAY (gdk_surface_get_display (surface)); if (!_set_pixformat_for_hdc (context_win32->gl_hdc, diff --git a/gdk/win32/gdkprivate-win32.h b/gdk/win32/gdkprivate-win32.h index 4f8a3e2f30..e40b7867f2 100644 --- a/gdk/win32/gdkprivate-win32.h +++ b/gdk/win32/gdkprivate-win32.h @@ -126,8 +126,6 @@ GdkWin32Screen *GDK_SURFACE_SCREEN(GObject *win); -#define GDK_SURFACE_IS_WIN32(win) (GDK_IS_SURFACE_IMPL_WIN32 (win->impl)) - /* Use this for hWndInsertAfter (2nd argument to SetWindowPos()) if * SWP_NOZORDER flag is used. Otherwise it's unobvious why a particular * argument is used. Using NULL is misleading, because @@ -414,10 +412,13 @@ void _gdk_win32_keymap_set_active_layout (GdkWin32Keymap *keymap, GdkKeymap *_gdk_win32_display_get_keymap (GdkDisplay *display); -void _gdk_win32_display_create_surface_impl (GdkDisplay *display, - GdkSurface *window, - GdkSurface *real_parent, - GdkSurfaceAttr *attributes); +GdkSurface *_gdk_win32_display_create_surface (GdkDisplay *display, + GdkSurfaceType surface_type, + GdkSurface *parent, + int x, + int y, + int width, + int height); /* stray GdkSurfaceImplWin32 members */ void _gdk_win32_surface_register_dnd (GdkSurface *window); diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c index 713afc034f..c5f448a6be 100644 --- a/gdk/win32/gdksurface-win32.c +++ b/gdk/win32/gdksurface-win32.c @@ -29,7 +29,7 @@ #include #include "gdk.h" -#include "gdksurfaceimpl.h" +#include "gdksurfaceprivate.h" #include "gdkprivate-win32.h" #include "gdkdeviceprivate.h" #include "gdkdevicemanager-win32.h" @@ -48,9 +48,7 @@ #include #include "fallback-c89.c" -static void gdk_surface_impl_win32_init (GdkSurfaceImplWin32 *window); -static void gdk_surface_impl_win32_class_init (GdkSurfaceImplWin32Class *klass); -static void gdk_surface_impl_win32_finalize (GObject *object); +static void gdk_surface_win32_finalize (GObject *object); static gpointer parent_class = NULL; static GSList *modal_window_stack = NULL; @@ -125,59 +123,10 @@ static void gdk_win32_impl_frame_clock_after_paint (GdkFrameClock *clock, static gboolean _gdk_surface_get_functions (GdkSurface *window, GdkWMFunction *functions); -struct _GdkWin32Surface { - GdkSurface parent; -}; - -struct _GdkWin32SurfaceClass { - GdkSurfaceClass parent_class; -}; - G_DEFINE_TYPE (GdkWin32Surface, gdk_win32_surface, GDK_TYPE_SURFACE) static void -gdk_win32_surface_class_init (GdkWin32SurfaceClass *window_class) -{ -} - -static void -gdk_win32_surface_init (GdkWin32Surface *window) -{ -} - - -G_DEFINE_TYPE (GdkSurfaceImplWin32, gdk_surface_impl_win32, GDK_TYPE_SURFACE_IMPL) - -GType -_gdk_surface_impl_win32_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - const GTypeInfo object_info = - { - sizeof (GdkSurfaceImplWin32Class), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) gdk_surface_impl_win32_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GdkSurfaceImplWin32), - 0, /* n_preallocs */ - (GInstanceInitFunc) gdk_surface_impl_win32_init, - }; - - object_type = g_type_register_static (GDK_TYPE_SURFACE_IMPL, - "GdkSurfaceImplWin32", - &object_info, 0); - } - - return object_type; -} - -static void -gdk_surface_impl_win32_init (GdkSurfaceImplWin32 *impl) +gdk_win32_surface_init (GdkWin32Surface *impl) { impl->hicon_big = NULL; impl->hicon_small = NULL; @@ -192,65 +141,65 @@ gdk_surface_impl_win32_init (GdkSurfaceImplWin32 *impl) static void -gdk_surface_impl_win32_dispose (GObject *object) +gdk_surface_win32_dispose (GObject *object) { - GdkSurfaceImplWin32 *surface_impl; + GdkWin32Surface *surface; - g_return_if_fail (GDK_IS_SURFACE_IMPL_WIN32 (object)); + g_return_if_fail (GDK_IS_WIN32_SURFACE (object)); - surface_impl = GDK_SURFACE_IMPL_WIN32 (object); + surface = GDK_WIN32_SURFACE (object); - g_clear_object (&surface_impl->cursor); + g_clear_object (&surface->cursor); G_OBJECT_CLASS (parent_class)->dispose (object); } static void -gdk_surface_impl_win32_finalize (GObject *object) +gdk_surface_win32_finalize (GObject *object) { GdkSurface *wrapper; - GdkSurfaceImplWin32 *surface_impl; + GdkWin32Surface *surface; - g_return_if_fail (GDK_IS_SURFACE_IMPL_WIN32 (object)); + g_return_if_fail (GDK_IS_WIN32_SURFACE (object)); - surface_impl = GDK_SURFACE_IMPL_WIN32 (object); + surface = GDK_WIN32_SURFACE (object); - wrapper = surface_impl->wrapper; + wrapper = surface->wrapper; if (!GDK_SURFACE_DESTROYED (wrapper)) { - gdk_win32_handle_table_remove (surface_impl->handle); + gdk_win32_handle_table_remove (surface->handle); } - g_clear_pointer (&surface_impl->snap_stash, g_free); - g_clear_pointer (&surface_impl->snap_stash_int, g_free); + g_clear_pointer (&surface->snap_stash, g_free); + g_clear_pointer (&surface->snap_stash_int, g_free); - if (surface_impl->hicon_big != NULL) + if (surface->hicon_big != NULL) { - GDI_CALL (DestroyIcon, (surface_impl->hicon_big)); - surface_impl->hicon_big = NULL; + GDI_CALL (DestroyIcon, (surface->hicon_big)); + surface->hicon_big = NULL; } - if (surface_impl->hicon_small != NULL) + if (surface->hicon_small != NULL) { - GDI_CALL (DestroyIcon, (surface_impl->hicon_small)); - surface_impl->hicon_small = NULL; + GDI_CALL (DestroyIcon, (surface->hicon_small)); + surface->hicon_small = NULL; } - g_free (surface_impl->decorations); + g_free (surface->decorations); - if (surface_impl->cache_surface) + if (surface->cache_surface) { - cairo_surface_destroy (surface_impl->cache_surface); - surface_impl->cache_surface = NULL; + cairo_surface_destroy (surface->cache_surface); + surface->cache_surface = NULL; } _gdk_win32_surface_unregister_dnd (wrapper); - g_clear_object (&surface_impl->drop); + g_clear_object (&surface->drop); - g_assert (surface_impl->transient_owner == NULL); - g_assert (surface_impl->transient_children == NULL); + g_assert (surface->transient_owner == NULL); + g_assert (surface->transient_children == NULL); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -318,7 +267,7 @@ _gdk_win32_adjust_client_rect (GdkSurface *window, gboolean _gdk_win32_surface_enable_transparency (GdkSurface *window) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; DWM_BLURBEHIND blur_behind; HRGN empty_region; HRESULT call_result; @@ -327,7 +276,7 @@ _gdk_win32_surface_enable_transparency (GdkSurface *window) if (window == NULL || GDK_SURFACE_HWND (window) == NULL) return FALSE; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); /* layered windows don't need blurbehind for transparency */ if (impl->layered) @@ -522,57 +471,60 @@ RegisterGdkClass (GdkSurfaceType wtype, GdkSurfaceTypeHint wtype_hint) * * [1] http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00214.html */ -void -_gdk_win32_display_create_surface_impl (GdkDisplay *display, - GdkSurface *window, - GdkSurface *real_parent) +GdkSurface * +_gdk_win32_display_create_surface (GdkDisplay *display, + GdkSurfaceType surface_type, + GdkSurface *parent, + int x, + int y, + int width, + int height) { HWND hwndNew; HANDLE hparent; ATOM klass = 0; DWORD dwStyle = 0, dwExStyle; RECT rect; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; GdkWin32Display *display_win32; const gchar *title; wchar_t *wtitle; gint window_width, window_height; + gint window_x, window_y; gint offset_x = 0, offset_y = 0; - gint x, y, real_x = 0, real_y = 0; + gint real_x = 0, real_y = 0; GdkFrameClock *frame_clock; - g_return_if_fail (display == _gdk_display); + g_return_val_if_fail (display == _gdk_display, NULL); GDK_NOTE (MISC, - g_print ("_gdk_surface_impl_new: %s\n", (window->surface_type == GDK_SURFACE_TOPLEVEL ? "TOPLEVEL" : - (window->surface_type == GDK_SURFACE_TEMP ? "TEMP" : "???"))); + g_print ("_gdk_surface_new: %s\n", (surface_type == GDK_SURFACE_TOPLEVEL ? "TOPLEVEL" : + (surface_type == GDK_SURFACE_TEMP ? "TEMP" : "???")))); - hparent = (real_parent != NULL) ? GDK_SURFACE_HWND (real_parent) : NULL; + hparent = (parent != NULL) ? GDK_SURFACE_HWND (parent) : NULL; - impl = g_object_new (GDK_TYPE_SURFACE_IMPL_WIN32, NULL); - impl->wrapper = GDK_SURFACE (window); - window->impl = GDK_SURFACE_IMPL (impl); + impl = g_object_new (GDK_TYPE_WIN32_SURFACE, NULL); impl->layered = FALSE; impl->layered_opacity = 1.0; display_win32 = GDK_WIN32_DISPLAY (display); impl->surface_scale = _gdk_win32_display_get_monitor_scale_factor (display_win32, NULL, NULL, NULL); - impl->unscaled_width = window->width * impl->surface_scale; - impl->unscaled_height = window->height * impl->surface_scale; + impl->unscaled_width = width * impl->surface_scale; + impl->unscaled_height = height * impl->surface_scale; dwExStyle = 0; - switch (window->surface_type) + switch (surface_type) { case GDK_SURFACE_TOPLEVEL: - if (window->parent) + if (parent) { /* The common code warns for this case. */ hparent = GetDesktopWindow (); } /* MSDN: We need WS_CLIPCHILDREN and WS_CLIPSIBLINGS for GL Context Creation */ - if (window->surface_type == GDK_SURFACE_TOPLEVEL) + if (surface_type == GDK_SURFACE_TOPLEVEL) dwStyle = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; else dwStyle = WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME | WS_CLIPCHILDREN; @@ -581,41 +533,41 @@ _gdk_win32_display_create_surface_impl (GdkDisplay *display, offset_y = _gdk_offset_y; break; + case GDK_SURFACE_POPUP: case GDK_SURFACE_TEMP: /* A temp window is not necessarily a top level window */ - dwStyle = real_parent == NULL ? WS_POPUP : WS_CHILDWINDOW; + dwStyle = parent == NULL ? WS_POPUP : WS_CHILDWINDOW; dwStyle |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS; dwExStyle |= WS_EX_TOOLWINDOW | WS_EX_TOPMOST; offset_x = _gdk_offset_x; offset_y = _gdk_offset_y; break; - default: g_assert_not_reached (); } - rect.left = window->x * impl->surface_scale; - rect.top = window->y * impl->surface_scale; - rect.right = rect.left + window->width * impl->surface_scale; - rect.bottom = rect.top + window->height * impl->surface_scale; + rect.left = x * impl->surface_scale; + rect.top = y * impl->surface_scale; + rect.right = rect.left + width * impl->surface_scale; + rect.bottom = rect.top + height * impl->surface_scale; AdjustWindowRectEx (&rect, dwStyle, FALSE, dwExStyle); - real_x = (window->x - offset_x) * impl->surface_scale; - real_y = (window->y - offset_y) * impl->surface_scale; + real_x = (x - offset_x) * impl->surface_scale; + real_y = (y - offset_y) * impl->surface_scale; - if (window->surface_type == GDK_SURFACE_TOPLEVEL) + if (surface_type == GDK_SURFACE_TOPLEVEL) { /* We initially place it at default so that we can get the default window positioning if we want */ - x = y = CW_USEDEFAULT; + window_x = window_y = CW_USEDEFAULT; } else { /* TEMP: Put these where requested */ - x = real_x; - y = real_y; + window_x = real_x; + window_y = real_y; } window_width = rect.right - rect.left; @@ -636,7 +588,7 @@ _gdk_win32_display_create_surface_impl (GdkDisplay *display, if (impl->type_hint == GDK_SURFACE_TYPE_HINT_DND) dwExStyle |= WS_EX_TRANSPARENT; - klass = RegisterGdkClass (window->surface_type, impl->type_hint); + klass = RegisterGdkClass (surface_type, impl->type_hint); wtitle = g_utf8_to_utf16 (title, -1, NULL, NULL, NULL); @@ -644,86 +596,63 @@ _gdk_win32_display_create_surface_impl (GdkDisplay *display, MAKEINTRESOURCEW (klass), wtitle, dwStyle, - x, - y, + window_x, window_y, window_width, window_height, hparent, NULL, _gdk_dll_hinstance, - window); - if (GDK_SURFACE_HWND (window) != hwndNew) - { - g_warning ("gdk_surface_new: gdk_event_translate::WM_CREATE (%p, %p) HWND mismatch.", - GDK_SURFACE_HWND (window), - hwndNew); - - /* HB: IHMO due to a race condition the handle was increased by - * one, which causes much trouble. Because I can't find the - * real bug, try to workaround it ... - * To reproduce: compile with MSVC 5, DEBUG=1 - */ -# if 0 - gdk_win32_handle_table_remove (GDK_SURFACE_HWND (window)); - GDK_SURFACE_HWND (window) = hwndNew; - gdk_win32_handle_table_insert (&GDK_SURFACE_HWND (window), window); -# else - /* the old behaviour, but with warning */ - impl->handle = hwndNew; -# endif - - } + NULL); + impl->handle = hwndNew; - GetWindowRect (GDK_SURFACE_HWND (window), &rect); + GetWindowRect (hwndNew, &rect); impl->initial_x = rect.left; impl->initial_y = rect.top; /* Now we know the initial position, move to actually specified position */ - if (real_x != x || real_y != y) + if (real_x != window_x || real_y != window_y) { - API_CALL (SetWindowPos, (GDK_SURFACE_HWND (window), + API_CALL (SetWindowPos, (hwndNew, SWP_NOZORDER_SPECIFIED, real_x, real_y, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER)); } - g_object_ref (window); - gdk_win32_handle_table_insert (&GDK_SURFACE_HWND (window), window); + g_object_ref (impl); + gdk_win32_handle_table_insert (&hwndNew, impl); GDK_NOTE (MISC, g_print ("... \"%s\" %dx%d@%+d%+d %p = %p\n", title, window_width, window_height, - window->x - offset_x, - window->y - offset_y, + GDK_SURFACE (impl)->x - offset_x, + GDK_SURFACE (impl)->y - offset_y, hparent, - GDK_SURFACE_HWND (window))); - - /* Add window handle to title */ - GDK_NOTE (MISC_OR_EVENTS, gdk_surface_set_title (window, title)); + hwndNew)); g_free (wtitle); if (impl->handle == NULL) { WIN32_API_FAILED ("CreateWindowExW"); - g_object_unref (window); - return; + g_object_unref (impl); + return NULL; } - _gdk_win32_surface_enable_transparency (window); + _gdk_win32_surface_enable_transparency (GDK_SURFACE (impl)); - frame_clock = gdk_surface_get_frame_clock (window); + frame_clock = gdk_surface_get_frame_clock (GDK_SURFACE (impl)); g_signal_connect (frame_clock, "after-paint", G_CALLBACK (gdk_win32_impl_frame_clock_after_paint), - window); + impl); + + return GDK_SURFACE (impl); } static void gdk_win32_surface_destroy (GdkSurface *window, - gboolean recursing, - gboolean foreign_destroy) + gboolean foreign_destroy) { - GdkSurfaceImplWin32 *surface_impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *surface = GDK_WIN32_SURFACE (window); g_return_if_fail (GDK_IS_SURFACE (window)); @@ -734,19 +663,19 @@ gdk_win32_surface_destroy (GdkSurface *window, _gdk_remove_modal_window (window); /* Remove all our transient children */ - while (surface_impl->transient_children != NULL) + while (surface->transient_children != NULL) { - GdkSurface *child = surface_impl->transient_children->data; + GdkSurface *child = surface->transient_children->data; gdk_surface_set_transient_for (child, NULL); } /* Remove ourself from our transient owner */ - if (surface_impl->transient_owner != NULL) + if (surface->transient_owner != NULL) { gdk_surface_set_transient_for (window, NULL); } - if (!recursing && !foreign_destroy) + if (!foreign_destroy) { window->destroyed = TRUE; DestroyWindow (GDK_SURFACE_HWND (window)); @@ -783,7 +712,7 @@ get_outer_rect (GdkSurface *window, gint height, RECT *rect) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); rect->left = rect->top = 0; rect->right = width * impl->surface_scale; @@ -798,7 +727,7 @@ adjust_for_gravity_hints (GdkSurface *window, gint *x, gint *y) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); if (impl->hint_flags & GDK_HINT_WIN_GRAVITY) { @@ -866,7 +795,7 @@ show_window_internal (GdkSurface *window, gboolean already_mapped, gboolean deiconify) { - GdkSurfaceImplWin32 *surface_impl; + GdkWin32Surface *surface; gboolean focus_on_map = FALSE; DWORD exstyle; @@ -938,19 +867,19 @@ show_window_internal (GdkSurface *window, * + Certain window types and hints have more elaborate positioning * schemes. */ - surface_impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + surface = GDK_WIN32_SURFACE (window); if (!already_mapped && GDK_SURFACE_TYPE (window) == GDK_SURFACE_TOPLEVEL && - (surface_impl->hint_flags & (GDK_HINT_POS | GDK_HINT_USER_POS)) == 0) + (surface->hint_flags & (GDK_HINT_POS | GDK_HINT_USER_POS)) == 0) { gboolean center = FALSE; RECT window_rect, center_on_rect; int x, y; - x = surface_impl->initial_x; - y = surface_impl->initial_y; + x = surface->initial_x; + y = surface->initial_y; - if (surface_impl->type_hint == GDK_SURFACE_TYPE_HINT_SPLASHSCREEN) + if (surface->type_hint == GDK_SURFACE_TYPE_HINT_SPLASHSCREEN) { HMONITOR monitor; MONITORINFO mi; @@ -968,15 +897,15 @@ show_window_internal (GdkSurface *window, } center = TRUE; } - else if (surface_impl->transient_owner != NULL && - GDK_SURFACE_IS_MAPPED (surface_impl->transient_owner)) + else if (surface->transient_owner != NULL && + GDK_SURFACE_IS_MAPPED (surface->transient_owner)) { - GdkSurface *owner = surface_impl->transient_owner; + GdkSurface *owner = surface->transient_owner; /* Center on transient parent */ - center_on_rect.left = (owner->x - _gdk_offset_x) * surface_impl->surface_scale; - center_on_rect.top = (owner->y - _gdk_offset_y) * surface_impl->surface_scale; - center_on_rect.right = center_on_rect.left + owner->width * surface_impl->surface_scale; - center_on_rect.bottom = center_on_rect.top + owner->height * surface_impl->surface_scale; + center_on_rect.left = (owner->x - _gdk_offset_x) * surface->surface_scale; + center_on_rect.top = (owner->y - _gdk_offset_y) * surface->surface_scale; + center_on_rect.right = center_on_rect.left + owner->width * surface->surface_scale; + center_on_rect.bottom = center_on_rect.top + owner->height * surface->surface_scale; _gdk_win32_adjust_client_rect (GDK_SURFACE (owner), ¢er_on_rect); center = TRUE; @@ -986,8 +915,8 @@ show_window_internal (GdkSurface *window, { window_rect.left = 0; window_rect.top = 0; - window_rect.right = window->width * surface_impl->surface_scale; - window_rect.bottom = window->height * surface_impl->surface_scale; + window_rect.right = window->width * surface->surface_scale; + window_rect.bottom = window->height * surface->surface_scale; _gdk_win32_adjust_client_rect (window, &window_rect); x = center_on_rect.left + ((center_on_rect.right - center_on_rect.left) - (window_rect.right - window_rect.left)) / 2; @@ -1173,7 +1102,7 @@ gdk_win32_surface_move (GdkSurface *window, else { RECT outer_rect; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); get_outer_rect (window, window->width, window->height, &outer_rect); @@ -1271,7 +1200,7 @@ gdk_win32_surface_move_resize_internal (GdkSurface *window, else { RECT outer_rect; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); get_outer_rect (window, width, height, &outer_rect); @@ -1303,10 +1232,9 @@ gdk_win32_surface_move_resize (GdkSurface *window, gint width, gint height) { - GdkSurfaceImplWin32 *surface_impl; + GdkWin32Surface *surface = GDK_WIN32_SURFACE (window); - surface_impl = GDK_SURFACE_IMPL_WIN32 (window->impl); - surface_impl->inhibit_configure = TRUE; + surface->inhibit_configure = TRUE; /* We ignore changes to the window being moved or resized by the user, as we don't want to fight the user */ @@ -1330,7 +1258,7 @@ gdk_win32_surface_move_resize (GdkSurface *window, } out: - surface_impl->inhibit_configure = FALSE; + surface->inhibit_configure = FALSE; _gdk_win32_emit_configure_event (window); } @@ -1415,9 +1343,7 @@ static gboolean get_effective_window_decorations (GdkSurface *window, GdkWMDecoration *decoration) { - GdkSurfaceImplWin32 *impl; - - impl = (GdkSurfaceImplWin32 *)window->impl; + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); if (gdk_surface_get_decorations (window, decoration)) return TRUE; @@ -1503,7 +1429,7 @@ gdk_win32_surface_set_geometry_hints (GdkSurface *window, const GdkGeometry *geometry, GdkSurfaceHints geom_mask) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); FullscreenInfo *fi; g_return_if_fail (GDK_IS_SURFACE (window)); @@ -1514,8 +1440,6 @@ gdk_win32_surface_set_geometry_hints (GdkSurface *window, GDK_NOTE (MISC, g_print ("gdk_surface_set_geometry_hints: %p\n", GDK_SURFACE_HWND (window))); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); - fi = g_object_get_data (G_OBJECT (window), "fullscreen-info"); if (fi) fi->hint_flags = geom_mask; @@ -1601,8 +1525,8 @@ gdk_win32_surface_set_transient_for (GdkSurface *window, HWND window_id, parent_id; LONG_PTR old_ptr; DWORD w32_error; - GdkSurfaceImplWin32 *surface_impl = GDK_SURFACE_IMPL_WIN32 (window->impl); - GdkSurfaceImplWin32 *parent_impl = NULL; + GdkWin32Surface *surface = GDK_WIN32_SURFACE (window); + GdkWin32Surface *parent_impl = NULL; GSList *item; g_return_if_fail (GDK_IS_SURFACE (window)); @@ -1622,12 +1546,12 @@ gdk_win32_surface_set_transient_for (GdkSurface *window, return; } - if (surface_impl->transient_owner == parent) + if (surface->transient_owner == parent) return; - if (GDK_IS_SURFACE (surface_impl->transient_owner)) + if (GDK_IS_SURFACE (surface->transient_owner)) { - GdkSurfaceImplWin32 *trans_impl = GDK_SURFACE_IMPL_WIN32 (surface_impl->transient_owner->impl); + GdkWin32Surface *trans_impl = GDK_WIN32_SURFACE (surface->transient_owner); item = g_slist_find (trans_impl->transient_children, window); item->data = NULL; trans_impl->transient_children = g_slist_delete_link (trans_impl->transient_children, item); @@ -1638,20 +1562,20 @@ gdk_win32_surface_set_transient_for (GdkSurface *window, trans_impl->transient_children = NULL; } - g_object_unref (G_OBJECT (surface_impl->transient_owner)); + g_object_unref (G_OBJECT (surface->transient_owner)); g_object_unref (G_OBJECT (window)); - surface_impl->transient_owner = NULL; + surface->transient_owner = NULL; } if (parent) { - parent_impl = GDK_SURFACE_IMPL_WIN32 (parent->impl); + parent_impl = GDK_WIN32_SURFACE (parent); parent_impl->transient_children = g_slist_append (parent_impl->transient_children, window); g_object_ref (G_OBJECT (window)); parent_impl->num_transients++; - surface_impl->transient_owner = parent; + surface->transient_owner = parent; g_object_ref (G_OBJECT (parent)); } @@ -1683,8 +1607,7 @@ gdk_win32_surface_set_transient_for (GdkSurface *window, void _gdk_push_modal_window (GdkSurface *window) { - modal_window_stack = g_slist_prepend (modal_window_stack, - window); + modal_window_stack = g_slist_prepend (modal_window_stack, window); } void @@ -1754,7 +1677,7 @@ gdk_win32_surface_get_geometry (GdkSurface *window, if (!GDK_SURFACE_DESTROYED (window)) { RECT rect; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); API_CALL (GetClientRect, (GDK_SURFACE_HWND (window), &rect)); @@ -1812,7 +1735,7 @@ gdk_win32_surface_get_root_coords (GdkSurface *window, gint tx; gint ty; POINT pt; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); pt.x = x * impl->surface_scale; pt.y = y * impl->surface_scale; @@ -1847,7 +1770,7 @@ gdk_win32_surface_get_frame_extents (GdkSurface *window, { HWND hwnd; RECT r; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; g_return_if_fail (GDK_IS_SURFACE (window)); g_return_if_fail (rect != NULL); @@ -1866,7 +1789,7 @@ gdk_win32_surface_get_frame_extents (GdkSurface *window, while (window->parent && window->parent->parent) window = window->parent; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); hwnd = GDK_SURFACE_HWND (window); API_CALL (GetWindowRect, (hwnd, &r)); @@ -1943,14 +1866,14 @@ gdk_win32_surface_set_icon_list (GdkSurface *window, gint w, h; gint dw, dh, diff; HICON small_hicon, big_hicon; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; g_return_if_fail (GDK_IS_SURFACE (window)); if (GDK_SURFACE_DESTROYED (window) || textures == NULL) return; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); /* ideal sizes for small and large icons */ big_w = GetSystemMetrics (SM_CXICON); @@ -2068,14 +1991,14 @@ update_single_bit (LONG *style, gboolean _gdk_win32_surface_lacks_wm_decorations (GdkSurface *window) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; LONG style; gboolean has_any_decorations; if (GDK_SURFACE_DESTROYED (window)) return FALSE; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); /* This is because GTK calls gdk_surface_set_decorations (window, 0), * even though GdkWMDecoration docs indicate that 0 does NOT mean @@ -2120,7 +2043,7 @@ _gdk_win32_surface_lacks_wm_decorations (GdkSurface *window) void _gdk_win32_surface_update_style_bits (GdkSurface *window) { - GdkSurfaceImplWin32 *impl = (GdkSurfaceImplWin32 *)window->impl; + GdkWin32Surface *impl = (GdkWin32Surface *)window; GdkWMDecoration decorations; LONG old_style, new_style, old_exstyle, new_exstyle; gboolean all; @@ -2291,11 +2214,11 @@ static void gdk_win32_surface_set_decorations (GdkSurface *window, GdkWMDecoration decorations) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; g_return_if_fail (GDK_IS_SURFACE (window)); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); GDK_NOTE (MISC, g_print ("gdk_surface_set_decorations: %p: %s %s%s%s%s%s%s\n", GDK_SURFACE_HWND (window), @@ -2319,11 +2242,11 @@ static gboolean gdk_win32_surface_get_decorations (GdkSurface *window, GdkWMDecoration *decorations) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; g_return_val_if_fail (GDK_IS_SURFACE (window), FALSE); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->decorations == NULL) return FALSE; @@ -2405,7 +2328,7 @@ calculate_aerosnap_regions (GdkW32DragMoveResizeContext *context) { GdkDisplay *display; gint n_monitors, monitor_idx, other_monitor_idx; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (context->window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (context->window); #if defined(MORE_AEROSNAP_DEBUGGING) gint i; #endif @@ -2563,9 +2486,9 @@ calculate_aerosnap_regions (GdkW32DragMoveResizeContext *context) static void discard_snapinfo (GdkSurface *window) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); impl->snap_state = GDK_WIN32_AEROSNAP_STATE_UNDETERMINED; @@ -2580,10 +2503,10 @@ static void unsnap (GdkSurface *window, GdkMonitor *monitor) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; GdkRectangle rect; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); impl->snap_state = GDK_WIN32_AEROSNAP_STATE_UNDETERMINED; @@ -2655,7 +2578,7 @@ unsnap (GdkSurface *window, static void stash_window (GdkSurface *window, - GdkSurfaceImplWin32 *impl) + GdkWin32Surface *impl) { gint x, y; gint width, wwidth; @@ -2732,9 +2655,9 @@ snap_up (GdkSurface *window) SHORT maxysize; gint x, y; gint width, height; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); impl->snap_state = GDK_WIN32_AEROSNAP_STATE_FULLUP; @@ -2761,9 +2684,9 @@ snap_left (GdkSurface *window, GdkMonitor *snap_monitor) { GdkRectangle rect; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); impl->snap_state = GDK_WIN32_AEROSNAP_STATE_HALFLEFT; @@ -2787,9 +2710,9 @@ snap_right (GdkSurface *window, GdkMonitor *snap_monitor) { GdkRectangle rect; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); impl->snap_state = GDK_WIN32_AEROSNAP_STATE_HALFRIGHT; @@ -2812,7 +2735,7 @@ void _gdk_win32_surface_handle_aerosnap (GdkSurface *window, GdkWin32AeroSnapCombo combo) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; GdkDisplay *display; gint n_monitors; GdkSurfaceState surface_state = gdk_surface_get_state (window); @@ -2821,7 +2744,7 @@ _gdk_win32_surface_handle_aerosnap (GdkSurface *window, gboolean halfsnapped; GdkMonitor *monitor; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); display = gdk_surface_get_display (window); n_monitors = gdk_display_get_n_monitors (display); monitor = gdk_display_get_monitor_at_surface (display, window); @@ -3155,7 +3078,7 @@ draw_indicator (GdkW32DragMoveResizeContext *context, gdouble line_width; gdouble corner_radius; gint64 animation_duration; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (context->window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (context->window); line_width = AEROSNAP_INDICATOR_LINE_WIDTH * impl->surface_scale; corner_radius = AEROSNAP_INDICATOR_CORNER_RADIUS; @@ -3256,7 +3179,7 @@ redraw_indicator (gpointer user_data) POINT source_point = { 0, 0 }; gboolean last_draw; gdouble indicator_opacity; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; gboolean do_source_remove = FALSE; indicator_opacity = AEROSNAP_INDICATOR_OPACITY; @@ -3267,7 +3190,7 @@ redraw_indicator (gpointer user_data) do_source_remove = TRUE; } - impl = GDK_SURFACE_IMPL_WIN32 (context->window->impl); + impl = GDK_WIN32_SURFACE (context->window); if (!ensure_snap_indicator_surface (context, context->indicator_window_rect.width, @@ -3406,7 +3329,7 @@ update_fullup_indicator (GdkSurface *window, SHORT maxysize; GdkRectangle from, to; GdkRectangle to_adjusted, from_adjusted, from_or_to; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; GDK_NOTE (MISC, g_print ("Update fullup indicator\n")); @@ -3416,7 +3339,7 @@ update_fullup_indicator (GdkSurface *window, if (context->shape_indicator == NULL) return; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); maxysize = GetSystemMetrics (SM_CYVIRTUALSCREEN); gdk_surface_get_position (window, &to.x, &to.y); to.width = gdk_surface_get_width (window); @@ -3468,7 +3391,7 @@ start_indicator (GdkSurface *window, SHORT maxysize; GdkRectangle start_size, end_size; GdkDisplay *display; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); display = gdk_surface_get_display (window); monitor = gdk_display_get_monitor_at_point (display, x, y); @@ -3764,42 +3687,6 @@ get_cursor_name_from_op (GdkW32WindowDragOp op, return NULL; } -static gboolean -point_in_window (GdkSurface *window, - gdouble x, - gdouble y) -{ - return x >= 0 && x < window->width && - y >= 0 && y < window->height && - (window->input_shape == NULL || - cairo_region_contains_point (window->input_shape, x, y)); -} - -static GdkSurface * -child_window_at_coordinates (GdkSurface *window, - gint root_x, - gint root_y) -{ - gint x, y; - GList *l; - GList *children; - - children = gdk_surface_peek_children (window); - gdk_surface_get_root_origin (window, &x, &y); - x = root_x - x; - y = root_y - y; - - for (l = children; l; l = g_list_next (l)) - { - GdkSurface *child = GDK_SURFACE (l->data); - - if (point_in_window (child, x, y)) - return child; - } - - return window; -} - static void setup_drag_move_resize_context (GdkSurface *window, GdkW32DragMoveResizeContext *context, @@ -3814,7 +3701,7 @@ setup_drag_move_resize_context (GdkSurface *window, RECT rect; const gchar *cursor_name; GdkSurface *pointer_window; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); gboolean maximized = gdk_surface_get_state (window) & GDK_SURFACE_STATE_MAXIMIZED; gint root_x, root_y; @@ -4055,7 +3942,7 @@ setup_drag_move_resize_context (GdkSurface *window, context->cursor = gdk_cursor_new_from_name (cursor_name, NULL); - pointer_window = child_window_at_coordinates (window, root_x, root_y); + pointer_window = window; /* Note: This triggers a WM_CAPTURECHANGED, which will trigger * gdk_win32_surface_end_move_resize_drag(), which will end @@ -4091,7 +3978,7 @@ setup_drag_move_resize_context (GdkSurface *window, g_print ("begin drag moveresize: window %p, toplevel %p, " "op %u, edge %d, device %p, " "button %d, coord %d:%d, time %u\n", - pointer_window, gdk_surface_get_toplevel (window), + pointer_window, window, context->op, context->edge, context->device, context->button, context->start_root_x, context->start_root_y, context->timestamp)); @@ -4100,7 +3987,7 @@ setup_drag_move_resize_context (GdkSurface *window, void gdk_win32_surface_end_move_resize_drag (GdkSurface *window) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); GdkW32DragMoveResizeContext *context = &impl->drag_move_resize_context; context->op = GDK_WIN32_DRAGOP_NONE; @@ -4141,7 +4028,7 @@ gdk_win32_surface_end_move_resize_drag (GdkSurface *window) g_print ("end drag moveresize: window %p, toplevel %p," "op %u, edge %d, device %p, " "button %d, coord %d:%d, time %u\n", - window, gdk_surface_get_toplevel (window), + window, window, context->op, context->edge, context->device, context->button, context->start_root_x, context->start_root_y, context->timestamp)); @@ -4158,9 +4045,7 @@ gdk_win32_get_window_size_and_position_from_client_rect (GdkSurface *window, SIZE *window_size, POINT *window_position) { - GdkSurfaceImplWin32 *impl; - - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); /* Turn client area into window area */ _gdk_win32_adjust_client_rect (window, window_rect); @@ -4191,9 +4076,7 @@ _gdk_win32_update_layered_window_from_cache (GdkSurface *surface, SIZE *window_size_ptr; POINT source_point = { 0, 0 }; POINT *source_point_ptr; - GdkSurfaceImplWin32 *impl; - - impl = GDK_SURFACE_IMPL_WIN32 (surface->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface); gdk_win32_get_window_size_and_position_from_client_rect (surface, client_rect, @@ -4249,12 +4132,12 @@ gdk_win32_surface_do_move_resize_drag (GdkSurface *window, RECT new_rect; gint diffy, diffx; MINMAXINFO mmi; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; GdkW32DragMoveResizeContext *context; gint width; gint height; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); context = &impl->drag_move_resize_context; if (!_gdk_win32_get_window_rect (window, &rect)) @@ -4456,7 +4339,7 @@ gdk_win32_surface_begin_resize_drag (GdkSurface *window, gint y, guint32 timestamp) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; g_return_if_fail (GDK_IS_SURFACE (window)); @@ -4474,7 +4357,7 @@ gdk_win32_surface_begin_resize_drag (GdkSurface *window, if (button != 1) return; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->drag_move_resize_context.op != GDK_WIN32_DRAGOP_NONE) gdk_win32_surface_end_move_resize_drag (window); @@ -4492,7 +4375,7 @@ gdk_win32_surface_begin_move_drag (GdkSurface *window, gint y, guint32 timestamp) { - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; g_return_if_fail (GDK_IS_SURFACE (window)); @@ -4509,7 +4392,7 @@ gdk_win32_surface_begin_move_drag (GdkSurface *window, if (button != 1) return; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->drag_move_resize_context.op != GDK_WIN32_DRAGOP_NONE) gdk_win32_surface_end_move_resize_drag (window); @@ -4655,7 +4538,7 @@ gdk_win32_surface_fullscreen (GdkSurface *window) g_free (fi); else { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); monitor = MonitorFromWindow (GDK_SURFACE_HWND (window), MONITOR_DEFAULTTONEAREST); mi.cbSize = sizeof (mi); @@ -4701,7 +4584,7 @@ gdk_win32_surface_unfullscreen (GdkSurface *window) fi = g_object_get_data (G_OBJECT (window), "fullscreen-info"); if (fi) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); gdk_synthesize_surface_state (window, GDK_SURFACE_STATE_FULLSCREEN, 0); @@ -4854,7 +4737,7 @@ gdk_win32_surface_set_type_hint (GdkSurface *window, g_enum_get_value (class, hint)->value_name); }G_STMT_END); - ((GdkSurfaceImplWin32 *)window->impl)->type_hint = hint; + GDK_WIN32_SURFACE (window)->type_hint = hint; _gdk_win32_surface_update_style_bits (window); } @@ -4867,7 +4750,7 @@ gdk_win32_surface_get_type_hint (GdkSurface *window) if (GDK_SURFACE_DESTROYED (window)) return GDK_SURFACE_TYPE_HINT_NORMAL; - return GDK_SURFACE_IMPL_WIN32 (window->impl)->type_hint; + return GDK_WIN32_SURFACE (window)->type_hint; } GdkSurface * @@ -4886,7 +4769,7 @@ gdk_win32_surface_set_opacity (GdkSurface *window, LONG exstyle; typedef BOOL (WINAPI *PFN_SetLayeredWindowAttributes) (HWND, COLORREF, BYTE, DWORD); PFN_SetLayeredWindowAttributes setLayeredWindowAttributes = NULL; - GdkSurfaceImplWin32 *impl; + GdkWin32Surface *impl; g_return_if_fail (GDK_IS_SURFACE (window)); @@ -4898,7 +4781,7 @@ gdk_win32_surface_set_opacity (GdkSurface *window, else if (opacity > 1) opacity = 1; - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); if (impl->layered) { @@ -4937,7 +4820,7 @@ gdk_win32_surface_set_opacity (GdkSurface *window, gboolean gdk_win32_surface_is_win32 (GdkSurface *window) { - return GDK_SURFACE_IS_WIN32 (window); + return GDK_IS_WIN32_SURFACE (window); } static gboolean @@ -4946,7 +4829,7 @@ gdk_win32_surface_show_window_menu (GdkSurface *window, { double event_x, event_y; gint x, y; - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); switch (event->any.type) { @@ -4974,7 +4857,7 @@ gdk_win32_surface_show_window_menu (GdkSurface *window, HWND gdk_win32_surface_get_impl_hwnd (GdkSurface *window) { - if (GDK_SURFACE_IS_WIN32 (window)) + if (GDK_IS_WIN32_SURFACE (window)) return GDK_SURFACE_HWND (window); return NULL; } @@ -4993,7 +4876,7 @@ GtkShowWindow (GdkSurface *window, BLENDFUNCTION blender; HWND hwnd = GDK_SURFACE_HWND (window); - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); switch (cmd_show) { @@ -5071,7 +4954,7 @@ gdk_win32_surface_set_shadow_width (GdkSurface *window, gint top, gint bottom) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); if (GDK_SURFACE_DESTROYED (window)) return; @@ -5098,8 +4981,7 @@ gint _gdk_win32_surface_get_scale_factor (GdkSurface *window) { GdkDisplay *display; - GdkSurfaceImplWin32 *impl; - + GdkWin32Surface *impl; GdkWin32Display *win32_display; if (GDK_SURFACE_DESTROYED (window)) @@ -5108,7 +4990,7 @@ _gdk_win32_surface_get_scale_factor (GdkSurface *window) g_return_val_if_fail (window != NULL, 1); display = gdk_surface_get_display (window); - impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + impl = GDK_WIN32_SURFACE (window); win32_display = GDK_WIN32_DISPLAY (display); @@ -5147,7 +5029,7 @@ _gdk_win32_surface_get_unscaled_size (GdkSurface *window, gint *unscaled_width, gint *unscaled_height) { - GdkSurfaceImplWin32 *impl = GDK_SURFACE_IMPL_WIN32 (window->impl); + GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); if (unscaled_width) *unscaled_width = impl->unscaled_width; @@ -5167,15 +5049,15 @@ gdk_win32_input_shape_combine_region (GdkSurface *window, } static void -gdk_surface_impl_win32_class_init (GdkSurfaceImplWin32Class *klass) +gdk_win32_surface_class_init (GdkWin32SurfaceClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - GdkSurfaceImplClass *impl_class = GDK_SURFACE_IMPL_CLASS (klass); + GdkSurfaceClass *impl_class = GDK_SURFACE_CLASS (klass); parent_class = g_type_class_peek_parent (klass); - object_class->dispose = gdk_surface_impl_win32_dispose; - object_class->finalize = gdk_surface_impl_win32_finalize; + object_class->dispose = gdk_surface_win32_dispose; + object_class->finalize = gdk_surface_win32_finalize; impl_class->show = gdk_win32_surface_show; impl_class->hide = gdk_win32_surface_hide; @@ -5237,7 +5119,7 @@ gdk_surface_impl_win32_class_init (GdkSurfaceImplWin32Class *klass) HGDIOBJ gdk_win32_surface_get_handle (GdkSurface *window) { - if (!GDK_SURFACE_IS_WIN32 (window)) + if (!GDK_IS_WIN32_SURFACE (window)) { g_warning (G_STRLOC " window is not a native Win32 window"); return NULL; diff --git a/gdk/win32/gdksurface-win32.h b/gdk/win32/gdksurface-win32.h index 6caa0d2f25..7f774668e1 100644 --- a/gdk/win32/gdksurface-win32.h +++ b/gdk/win32/gdksurface-win32.h @@ -27,26 +27,14 @@ #include "gdk/win32/gdkprivate-win32.h" #include "gdk/win32/gdkwin32cursor.h" -#include "gdk/gdksurfaceimpl.h" +#include "gdk/win32/gdkwin32surface.h" +#include "gdk/gdksurfaceprivate.h" #include "gdk/gdkcursor.h" #include G_BEGIN_DECLS -/* Window implementation for Win32 - */ - -typedef struct _GdkSurfaceImplWin32 GdkSurfaceImplWin32; -typedef struct _GdkSurfaceImplWin32Class GdkSurfaceImplWin32Class; - -#define GDK_TYPE_SURFACE_IMPL_WIN32 (_gdk_surface_impl_win32_get_type ()) -#define GDK_SURFACE_IMPL_WIN32(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_SURFACE_IMPL_WIN32, GdkSurfaceImplWin32)) -#define GDK_SURFACE_IMPL_WIN32_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_SURFACE_IMPL_WIN32, GdkSurfaceImplWin32Class)) -#define GDK_IS_SURFACE_IMPL_WIN32(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_SURFACE_IMPL_WIN32)) -#define GDK_IS_SURFACE_IMPL_WIN32_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_SURFACE_IMPL_WIN32)) -#define GDK_SURFACE_IMPL_WIN32_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_SURFACE_IMPL_WIN32, GdkSurfaceImplWin32Class)) - enum _GdkWin32AeroSnapCombo { GDK_WIN32_AEROSNAP_COMBO_NOTHING = 0, @@ -219,9 +207,9 @@ typedef struct _GdkW32DragMoveResizeContext GdkW32DragMoveResizeContext; /* defined in gdkdrop-win32.c */ typedef struct _drop_target_context drop_target_context; -struct _GdkSurfaceImplWin32 +struct _GdkWin32Surface { - GdkSurfaceImpl parent_instance; + GdkSurface parent_instance; GdkSurface *wrapper; HANDLE handle; @@ -355,12 +343,12 @@ struct _GdkSurfaceImplWin32 gint unscaled_height; }; -struct _GdkSurfaceImplWin32Class +struct _GdkWin32SurfaceClass { - GdkSurfaceImplClass parent_class; + GdkSurfaceClass parent_class; }; -GType _gdk_surface_impl_win32_get_type (void); +GType _gdk_win32_surface_get_type (void); void _gdk_win32_surface_tmp_unset_bg (GdkSurface *window, gboolean recurse); diff --git a/gdk/win32/gdkwin32misc.h b/gdk/win32/gdkwin32misc.h index e8133f0748..5410c8edda 100644 --- a/gdk/win32/gdkwin32misc.h +++ b/gdk/win32/gdkwin32misc.h @@ -44,7 +44,7 @@ G_BEGIN_DECLS #include "gdkprivate-win32.h" -#define GDK_SURFACE_HWND(win) (GDK_SURFACE_IMPL_WIN32(win->impl)->handle) +#define GDK_SURFACE_HWND(win) (GDK_WIN32_SURFACE(win)->handle) #else /* definition for exported 'internals' go here */ #define GDK_SURFACE_HWND(d) (gdk_win32_surface_get_handle (d)) diff --git a/gtk/gtkimcontextime.c b/gtk/gtkimcontextime.c index 1814e7b30b..d436bfd778 100644 --- a/gtk/gtkimcontextime.c +++ b/gtk/gtkimcontextime.c @@ -678,7 +678,7 @@ gtk_im_context_ime_focus_in (GtkIMContext *context) if (!himc) return; - toplevel = gdk_surface_get_toplevel (context_ime->client_surface); + toplevel = context_ime->client_surface; if (GDK_IS_SURFACE (toplevel)) { gdk_win32_display_add_filter (gdk_surface_get_display (toplevel), @@ -776,7 +776,7 @@ gtk_im_context_ime_focus_out (GtkIMContext *context) } /* remove event fileter */ - toplevel = gdk_surface_get_toplevel (context_ime->client_surface); + toplevel = context_ime->client_surface; if (GDK_IS_SURFACE (toplevel)) { gdk_win32_display_remove_filter (gdk_surface_get_display (toplevel), @@ -877,7 +877,7 @@ gtk_im_context_ime_set_preedit_font (GtkIMContext *context) if (!context_ime->client_surface) return; - widget = gtk_root_get_for_surface (context_ime->client_surface); + widget = GTK_WIDGET (gtk_native_get_for_surface (context_ime->client_surface)); if (!widget) return; @@ -998,7 +998,7 @@ gtk_im_context_ime_message_filter (GdkWin32Display *display, if (!context_ime->focus) return retval; - toplevel = gdk_surface_get_toplevel (context_ime->client_surface); + toplevel = context_ime->client_surface; if (gdk_win32_surface_get_impl_hwnd (toplevel) != msg->hwnd) return retval; @@ -1024,8 +1024,7 @@ gtk_im_context_ime_message_filter (GdkWin32Display *display, RECT rc; hwnd_top = - gdk_win32_surface_get_impl_hwnd (gdk_surface_get_toplevel - (context_ime->client_surface)); + gdk_win32_surface_get_impl_hwnd (context_ime->client_surface); GetWindowRect (hwnd_top, &rc); pt.x = wx; pt.y = wy; @@ -1131,7 +1130,7 @@ get_window_position (GdkSurface *surface, gint *x, gint *y) *x += wx; *y += wy; parent = gdk_surface_get_parent (surface); - toplevel = gdk_surface_get_toplevel (surface); + toplevel = surface; if (parent && parent != toplevel) get_window_position (parent, x, y); -- 2.30.2